home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #318 (1994-03)(Rhein-Sieg-Soft).zip / Franz PD Disk #318 (1994-03)(Rhein-Sieg-Soft).adf / Kopfrechnen / KOPFRECHNEN.LST < prev    next >
File List  |  1991-08-22  |  12KB  |  556 lines

  1. OPENS 1,0,0,640,256,2,&H8000
  2. OPENW #1,0,0,640,254,0,4098
  3. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  4. task=FindTask(0)         ! Task finden
  5. oldpoint=LPEEK(task+184) ! Alte Requesteradresse
  6. adr%=WINDOW(1)           ! Fensteradresse
  7. LPOKE task+184,adr%      ! Fensteradresse in Requesteradr POKEn
  8. DIM hs$(12),hs%(12),gr$(12)
  9. @init
  10. > PROCEDURE init
  11. IF NOT EXIST("rechnen.hiscore") THEN
  12.   OPEN "O",#1,"rechnen.hiscore"
  13.   FOR p%=1 TO 12
  14.     PRINT #1,"Amiga"
  15.     PRINT #1,"10"
  16.     PRINT #1,"bis 10000"
  17.   NEXT p%
  18.   CLOSE #1
  19. ELSE
  20.   GOSUB showhiscore
  21. ENDIF
  22. WHILE wahl<>7 ! Programmende nicht gewählt !
  23.   CLS
  24.   WHILE MOUSEK=1
  25.   WEND
  26.   PRINT AT(4,6);"Trainiere Dein Rechnen !"
  27.   PRINT AT(4,14);"Wähle bitte mit der Maus"
  28.   PRINT AT(4,16);"    die gewünschte"
  29.   PRINT AT(4,18);"Schwierigkeitsstufe aus!"
  30.   GOSUB gadget(35,4,"Rechnen mit Zahlen bis 20   ")
  31.   GOSUB gadget(35,7,"Rechnen mit Zahlen bis 50   ")
  32.   GOSUB gadget(35,10,"Rechnen mit Zahlen bis 100  ")
  33.   GOSUB gadget(35,13,"Rechnen mit Zahlen bis 500  ")
  34.   GOSUB gadget(35,16,"Rechnen mit Zahlen bis 1000 ")
  35.   GOSUB gadget(35,19,"Rechnen mit Zahlen bis 10000")
  36.   GOSUB gadget(35,23," - -  Programm beenden  - - ")
  37.   WHILE wahl=0
  38.     REPEAT
  39.     UNTIL MOUSEK=1
  40.     IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>23 AND MOUSEY<37 THEN
  41.       wahl=1
  42.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>47 AND MOUSEY<61
  43.       wahl=2
  44.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>71 AND MOUSEY<85
  45.       wahl=3
  46.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>95 AND MOUSEY<109
  47.       wahl=4
  48.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>119 AND MOUSEY<133
  49.       wahl=5
  50.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>143 AND MOUSEY<157
  51.       wahl=6
  52.     ELSE IF MOUSEX>260 AND MOUSEX<500 AND MOUSEY>175 AND MOUSEY<189
  53.       wahl=7
  54.     ENDIF
  55.   WEND
  56.   CLS
  57.   ON wahl GOSUB stufe1,stufe2,stufe3,stufe4,stufe5,stufe6,ende
  58.   wahl=0
  59. WEND
  60. RETURN
  61. > PROCEDURE stufe1
  62. TITLEW #1," Kopfrechnen üben mit Zahlen bis 20 "
  63. GOSUB auswahl
  64. max=20
  65. GOSUB rechnen
  66. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  67. rwahl=0
  68. RETURN
  69. > PROCEDURE stufe2
  70. TITLEW #1," Kopfrechnen üben mit Zahlen bis 50 "
  71. GOSUB auswahl
  72. max=50
  73. GOSUB rechnen
  74. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  75. rwahl=0
  76. RETURN
  77. > PROCEDURE stufe3
  78. TITLEW #1," Kopfrechnen üben mit Zahlen bis 100 "
  79. GOSUB auswahl
  80. max=100
  81. GOSUB rechnen
  82. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  83. rwahl=0
  84. RETURN
  85. > PROCEDURE stufe4
  86. TITLEW #1," Kopfrechnen üben mit Zahlen bis 500 "
  87. GOSUB auswahl
  88. max=500
  89. GOSUB rechnen
  90. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  91. rwahl=0
  92. RETURN
  93. > PROCEDURE stufe5
  94. TITLEW #1," Kopfrechnen üben mit Zahlen bis 1000 "
  95. GOSUB auswahl
  96. max=1000
  97. GOSUB rechnen
  98. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  99. rwahl=0
  100. RETURN
  101. > PROCEDURE stufe6
  102. TITLEW #1," Kopfrechnen üben mit Zahlen bis 10000 "
  103. GOSUB auswahl
  104. max=10000
  105. GOSUB rechnen
  106. TITLEW #1," Kopfrechnen üben   -   programmiert in GFABASIC  von Werner Ammann April 1991 "
  107. rwahl=0
  108. RETURN
  109. > PROCEDURE rechnen
  110. CLS
  111. REPEAT
  112. UNTIL INKEY$=""
  113. richtig=0
  114. falsch=0
  115. zeit=TIMER
  116. FOR p=1 TO 10
  117. IF rwahl=1 THEN           ! add
  118. z1=0
  119. z2=0
  120. WHILE z1+z2<1 OR z1+z2>max
  121. z1=RANDOM(max)+1
  122. z2=RANDOM(max)+1
  123. WEND
  124. PCOLOR 1,0
  125. PRINT AT(2,p*2);" Wieviel gibt ";z1;" + ";z2;" ?  ";
  126. FORM INPUT 7,ein$
  127. ein=VAL(ein$)
  128. IF ein=z1+z2 THEN
  129. INC richtig
  130. PCOLOR 2,1
  131. PRINT AT(37,p*2);"RICHTIG"
  132. ELSE
  133. INC falsch
  134. PCOLOR 3,0
  135. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1+z2
  136. ENDIF
  137. ENDIF
  138. IF rwahl=2 THEN           ! sub
  139. z1=RANDOM(max)+1
  140. z2=0
  141. WHILE z2<1 OR z2>z1
  142. z2=RANDOM(max)+1
  143. WEND
  144. PCOLOR 1,0
  145. PRINT AT(2,p*2);" Wieviel gibt ";z1;" - ";z2;" ?  ";
  146. FORM INPUT 7,ein$
  147. ein=VAL(ein$)
  148. IF ein=z1-z2 THEN
  149. INC richtig
  150. PCOLOR 2,1
  151. PRINT AT(37,p*2);"RICHTIG"
  152. ELSE
  153. INC falsch
  154. PCOLOR 3,0
  155. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1-z2
  156. ENDIF
  157. ENDIF
  158. IF rwahl=3 THEN           ! add und sub
  159. z=RANDOM(2)
  160. IF z=1 THEN
  161. z1=0
  162. z2=0
  163. WHILE z1+z2<1 OR z1+z2>max
  164. z1=RANDOM(max)+1
  165. z2=RANDOM(max)+1
  166. WEND
  167. PCOLOR 1,0
  168. PRINT AT(2,p*2);" Wieviel gibt ";z1;" + ";z2;" ?  ";
  169. FORM INPUT 7,ein$
  170. ein=VAL(ein$)
  171. IF ein=z1+z2 THEN
  172. INC richtig
  173. PCOLOR 2,1
  174. PRINT AT(37,p*2);"RICHTIG"
  175. ELSE
  176. INC falsch
  177. PCOLOR 3,0
  178. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1+z2
  179. ENDIF
  180. ELSE
  181. z1=RANDOM(max)+1
  182. z2=0
  183. WHILE z2<1 OR z2>z1
  184. z2=RANDOM(max)+1
  185. WEND
  186. PCOLOR 1,0
  187. PRINT AT(2,p*2);" Wieviel gibt ";z1;" - ";z2;" ?  ";
  188. FORM INPUT 7,ein$
  189. ein=VAL(ein$)
  190. IF ein=z1-z2 THEN
  191. INC richtig
  192. PCOLOR 2,1
  193. PRINT AT(37,p*2);"RICHTIG"
  194. ELSE
  195. INC falsch
  196. PCOLOR 3,0
  197. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1-z2
  198. ENDIF
  199. ENDIF
  200. ENDIF
  201. IF rwahl=4 THEN           ! mul
  202. z1=0
  203. z2=0
  204. WHILE z1*z2>max OR z1*z2<1
  205. z1=RANDOM(max-1)+2
  206. z2=RANDOM(max-1)+2
  207. WEND
  208. PCOLOR 1,0
  209. PRINT AT(2,p*2);" Wieviel gibt ";z1;" * ";z2;" ?  ";
  210. FORM INPUT 7,ein$
  211. ein=VAL(ein$)
  212. IF ein=z1*z2 THEN
  213. INC richtig
  214. PCOLOR 2,1
  215. PRINT AT(37,p*2);"RICHTIG"
  216. ELSE
  217. INC falsch
  218. PCOLOR 3,0
  219. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1*z2
  220. ENDIF
  221. ENDIF
  222. IF rwahl=5 THEN           ! div
  223. z1=3
  224. z2=4
  225. WHILE MOD(z1,z2)<>0 OR (z1=z2)
  226. z1=RANDOM(max)+1
  227. z2=RANDOM(max-1)+2
  228. WEND
  229. PCOLOR 1,0
  230. PRINT AT(2,p*2);" Wieviel gibt ";z1;" : ";z2;" ?  ";
  231. FORM INPUT 7,ein$
  232. ein=VAL(ein$)
  233. IF ein=z1/z2 THEN
  234. INC richtig
  235. PCOLOR 2,1
  236. PRINT AT(37,p*2);"RICHTIG"
  237. ELSE
  238. INC falsch
  239. PCOLOR 3,0
  240. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1/z2
  241. ENDIF
  242. ENDIF
  243. IF rwahl=6 THEN           ! mul und div
  244. z=RANDOM(2)
  245. IF z=1 THEN
  246. z1=0
  247. z2=0
  248. WHILE z1*z2>max OR z1*z2<1
  249. z1=RANDOM(max-1)+2
  250. z2=RANDOM(max-1)+2
  251. WEND
  252. PCOLOR 1,0
  253. PRINT AT(2,p*2);" Wieviel gibt ";z1;" * ";z2;" ?  ";
  254. FORM INPUT 7,ein$
  255. ein=VAL(ein$)
  256. IF ein=z1*z2 THEN
  257. INC richtig
  258. PCOLOR 2,1
  259. PRINT AT(37,p*2);"RICHTIG"
  260. ELSE
  261. INC falsch
  262. PCOLOR 3,0
  263. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1*z2
  264. ENDIF
  265. ELSE
  266. z1=3
  267. z2=4
  268. WHILE MOD(z1,z2)<>0 OR (z1=z2)
  269. z1=RANDOM(max)+1
  270. z2=RANDOM(max-1)+2
  271. WEND
  272. PCOLOR 1,0
  273. PRINT AT(2,p*2);" Wieviel gibt ";z1;" : ";z2;" ?  ";
  274. FORM INPUT 7,ein$
  275. ein=VAL(ein$)
  276. IF ein=z1/z2 THEN
  277. INC richtig
  278. PCOLOR 2,1
  279. PRINT AT(37,p*2);"RICHTIG"
  280. ELSE
  281. INC falsch
  282. PCOLOR 3,0
  283. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1/z2
  284. ENDIF
  285. ENDIF
  286. ENDIF
  287. IF rwahl=7 THEN           ! alle vier
  288. z=RANDOM(4)+1
  289. IF z=1 THEN
  290. z1=0
  291. z2=0
  292. WHILE z1+z2<1 OR z1+z2>max
  293. z1=RANDOM(max)+1
  294. z2=RANDOM(max)+1
  295. WEND
  296. PCOLOR 1,0
  297. PRINT AT(2,p*2);" Wieviel gibt ";z1;" + ";z2;" ?  ";
  298. FORM INPUT 7,ein$
  299. ein=VAL(ein$)
  300. IF ein=z1+z2 THEN
  301. INC richtig
  302. PCOLOR 2,1
  303. PRINT AT(37,p*2);"RICHTIG"
  304. ELSE
  305. INC falsch
  306. PCOLOR 3,0
  307. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1+z2
  308. ENDIF
  309. ELSE IF z=2
  310. z1=RANDOM(max)+1
  311. z2=0
  312. WHILE z2<1 OR z2>z1
  313. z2=RANDOM(max)+1
  314. WEND
  315. PCOLOR 1,0
  316. PRINT AT(2,p*2);" Wieviel gibt ";z1;" - ";z2;" ?  ";
  317. FORM INPUT 7,ein$
  318. ein=VAL(ein$)
  319. IF ein=z1-z2 THEN
  320. INC richtig
  321. PCOLOR 2,1
  322. PRINT AT(37,p*2);"RICHTIG"
  323. ELSE
  324. INC falsch
  325. PCOLOR 3,0
  326. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1-z2
  327. ENDIF
  328. ELSE IF z=3
  329. z1=0
  330. z2=0
  331. WHILE z1*z2>max OR z1*z2<1
  332. z1=RANDOM(max-1)+2
  333. z2=RANDOM(max-1)+2
  334. WEND
  335. PCOLOR 1,0
  336. PRINT AT(2,p*2);" Wieviel gibt ";z1;" * ";z2;" ?  ";
  337. FORM INPUT 7,ein$
  338. ein=VAL(ein$)
  339. IF ein=z1*z2 THEN
  340. INC richtig
  341. PCOLOR 2,1
  342. PRINT AT(37,p*2);"RICHTIG"
  343. ELSE
  344. INC falsch
  345. PCOLOR 3,0
  346. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1*z2
  347. ENDIF
  348. ELSE IF z=4
  349. z1=3
  350. z2=4
  351. WHILE MOD(z1,z2)<>0 OR (z1=z2)
  352. z1=RANDOM(max)+1
  353. z2=RANDOM(max-1)+2
  354. WEND
  355. PCOLOR 1,0
  356. PRINT AT(2,p*2);" Wieviel gibt ";z1;" : ";z2;" ?  ";
  357. FORM INPUT 7,ein$
  358. ein=VAL(ein$)
  359. IF ein=z1/z2 THEN
  360. INC richtig
  361. PCOLOR 2,1
  362. PRINT AT(37,p*2);"RICHTIG"
  363. ELSE
  364. INC falsch
  365. PCOLOR 3,0
  366. PRINT AT(37,p*2);"FALSCH, richtig wäre ";z1/z2
  367. ENDIF
  368. ENDIF
  369. ENDIF
  370. NEXT p
  371. rechenzeit%=(TIMER-zeit)/200
  372. PRINT
  373. PRINT
  374. PCOLOR 1,0
  375. PRINT "  Von 10 Aufgaben sind ";richtig;" richtig gelöst worden in ";rechenzeit%;" Sekunden."
  376. GOSUB wertung
  377. PRINT
  378. PRINT "                                Maustaste !"
  379. REPEAT
  380. UNTIL MOUSEK
  381. CLS
  382. RETURN
  383. > PROCEDURE auswahl
  384. WHILE MOUSEK=1
  385. WEND
  386. GOSUB gadget(5,4,"Nur Addieren               + ")
  387. GOSUB gadget(5,7,"Nur Subtrahieren           - ")
  388. GOSUB gadget(5,10,"Addieren und subtrahieren    ")
  389. GOSUB gadget(5,13,"Nur Multiplizieren        *  ")
  390. GOSUB gadget(5,16,"Nur Dividieren            :  ")
  391. GOSUB gadget(5,19,"Multiplizieren und Dividieren")
  392. GOSUB gadget(5,22,"Alle vier Arten gemischt     ")
  393. WHILE rwahl=0
  394. REPEAT
  395. UNTIL MOUSEK=1
  396. IF MOUSEX>20 AND MOUSEX<530 AND MOUSEY>23 AND MOUSEY<37 THEN
  397. rwahl=1
  398. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>47 AND MOUSEY<61
  399. rwahl=2
  400. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>71 AND MOUSEY<85
  401. rwahl=3
  402. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>95 AND MOUSEY<109
  403. rwahl=4
  404. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>119 AND MOUSEY<133
  405. rwahl=5
  406. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>143 AND MOUSEY<157
  407. rwahl=6
  408. ELSE IF MOUSEX>20 AND MOUSEX<270 AND MOUSEY>167 AND MOUSEY<181
  409. rwahl=7
  410. ENDIF
  411. WEND
  412. RETURN
  413. > PROCEDURE wertung
  414. PRINT
  415. IF richtig=10 THEN
  416. w1$="  Sehr gut gelöst, "
  417. ELSE IF richtig=9 OR richtig=8
  418. w1$="  Recht gut gemacht, "
  419. ELSE IF richtig=7 OR richtig=6
  420. w1$="  Mittelmässige Leistung, "
  421. ELSE IF richtig=5 OR richtig=4
  422. w1$="  Etwas schwach, "
  423. ELSE
  424. w1$="  Sehr schwach, "
  425. ENDIF
  426. IF richtig>5 AND rechenzeit%<121*wahl THEN
  427. w2$="und"
  428. ELSE IF richtig>5 AND rechenzeit%>120*wahl
  429. w2$="aber"
  430. ELSE IF richtig<6 AND rechenzeit%<121*wahl
  431. w2$="aber"
  432. ELSE
  433. w2$="und"
  434. ENDIF
  435. wahl=wahl/2
  436. IF rechenzeit%<31*wahl THEN
  437. w3$=" sehr schnell !"
  438. ELSE IF rechenzeit%>30*wahl AND rechenzeit%<61*wahl
  439. w3$=" recht schnell !"
  440. ELSE IF rechenzeit%>60*wahl AND rechenzeit%<121*wahl
  441. w3$=" etwa in normaler Zeit !"
  442. ELSE IF rechenzeit%>120*wahl AND rechenzeit%<240*wahl
  443. w3$=" etwas langsam !"
  444. ELSE
  445. w3$=" hast Du geschlafen ?"
  446. ENDIF
  447. PRINT w1$;w2$;w3$
  448. PRINT
  449. pkt%=richtig*(300-rechenzeit%)*(wahl/1.5)
  450. wahl=wahl*2
  451. IF pkt%>hs%(12) THEN
  452. GOSUB hiscoreeintrag
  453. ELSE
  454. IF pkt%<2 THEN
  455. PRINT "  Das ergibt insgesamt ja weniger als null Punkte, streng Dich bitte etwas an !"
  456. ELSE
  457. PRINT "  Das ergibt nun insgesamt ";pkt%;" Punkte !"
  458. ENDIF
  459. ENDIF
  460. RETURN
  461. > PROCEDURE ende
  462. REPEAT
  463. UNTIL MOUSEK
  464. LPOKE task+184,oldpoint      ! Urzustand wiederherstellen
  465. CLOSEW #1
  466. CLOSES 1
  467. EDIT
  468. RETURN
  469. > PROCEDURE gadget(gx%,gy%,text$)
  470. IF gx%<3 THEN
  471. gx%=3
  472. ENDIF
  473. IF gy%<3 THEN
  474. gy%=3
  475. ENDIF
  476. l%=LEN(text$)
  477. DEC gx%
  478. DEC gy%
  479. PCOLOR 1,0
  480. PRINT AT(gx%,gy%);text$
  481. COLOR 3,0
  482. BOX gx%*8-12,gy%*8-1,(gx%+l%)*8+4,gy%*8+13
  483. BOX gx%*8-11,gy%*8-1,(gx%+l%)*8+3,gy%*8+13
  484. LINE gx%*8-10,gy%*8+14,(gx%+l%)*8+5,gy%*8+14
  485. LINE gx%*8-8,gy%*8+15,(gx%+l%)*8+7,gy%*8+15
  486. LINE (gx%+l%)*8+5,gy%*8,(gx%+l%)*8+5,gy%*8+13
  487. LINE (gx%+l%)*8+6,gy%*8,(gx%+l%)*8+6,gy%*8+14
  488. LINE (gx%+l%)*8+7,gy%*8+1,(gx%+l%)*8+7,gy%*8+14
  489. LINE (gx%+l%)*8+8,gy%*8+1,(gx%+l%)*8+8,gy%*8+15
  490. RETURN
  491. > PROCEDURE showhiscore
  492. CLS
  493. PCOLOR 2,0
  494. PRINT AT(18,2);"DIE 12 BESTEN KOPFRECHNER :"
  495. PRINT
  496. PCOLOR 1,0
  497. OPEN "I",#1,"rechnen.hiscore"
  498. FOR p%=1 TO 12
  499. INPUT #1,hs$(p%)
  500. INPUT #1,hs%(p%)
  501. INPUT #1,gr$(p%)
  502. PRINT USING "  ##",p%;
  503. z$=SPACE$(20)
  504. LSET z$=hs$(p%)
  505. PRINT ". ";z$;"   ";
  506. PRINT USING "####",hs%(p%);
  507. PRINT " Punkte      Zahlengruppe ";gr$(p%)
  508. PRINT
  509. NEXT p%
  510. CLOSE #1
  511. PAUSE 12
  512. PRINT
  513. PCOLOR 2,0
  514. PRINT "                  Bitte Maustaste drücken !"
  515. REPEAT
  516. UNTIL MOUSEK
  517. PCOLOR 1,0
  518. CLS
  519. RETURN
  520. > PROCEDURE hiscoreeintrag
  521. PRINT "  ";pkt%;" Punkte. Neuer Hi-Score !  ";
  522. INPUT "Dein Name ";n$
  523. IF wahl=1 THEN
  524. gr$="bis    20"
  525. ELSE IF wahl=2
  526. gr$="bis    50"
  527. ELSE IF wahl=3
  528. gr$="bis   100"
  529. ELSE IF wahl=4
  530. gr$="bis   500"
  531. ELSE IF wahl=5
  532. gr$="bis  1000"
  533. ELSE IF wahl=6
  534. gr$="bis 10000"
  535. ENDIF
  536. FOR p%=1 TO 12
  537. IF hs%(p%)=<pkt% THEN
  538. INSERT hs$(p%)=n$
  539. INSERT hs%(p%)=pkt%
  540. INSERT gr$(p%)=gr$
  541. p%=12
  542. ENDIF
  543. NEXT p%
  544. GOSUB savehiscore
  545. GOSUB showhiscore
  546. RETURN
  547. > PROCEDURE savehiscore
  548. OPEN "O",#1,"rechnen.hiscore"
  549. FOR p%=1 TO 12
  550. PRINT #1,hs$(p%)
  551. PRINT #1,hs%(p%)
  552. PRINT #1,gr$(p%)
  553. NEXT p%
  554. CLOSE #1
  555. RETURN
  556.